package com.ruoyi.common.utils;

import cn.hutool.core.util.StrUtil;

import java.util.ArrayList;
import java.util.List;

public class PhoneUtils {

	/**
	 *  判断是否是手机号
	 * @param number
	 * @return
	 */
	public static boolean isPhoneNumber(String number) {
		// 正则表达式匹配，手机号的格式可以根据需求进行修改
//		String regex = "^(13\\\\d|14[5-9]|15[0-3,5-9]|16[6]|17[0-8]|18\\\\d|19[0-3,5-9])\\\\d{8}$";
//		return number.matches(regex);

		String regex = "^1[3-9]\\d{9}$";
		return number.matches(regex);
	}


	/**
	 * 隐藏多个逗号分隔的手机号中间4位
	 * @param phones 逗号分隔的手机号字符串（例如："13812345678,13987654321"）
	 * @return 隐藏中间4位后的字符串（例如："138****5678,139****4321"）
	 */
	public static List<String> getPhoneListByStr(String phones) {
		List<String> list = new ArrayList<>();
		if (phones == null || phones.isEmpty()) {
			return new ArrayList<>();
		}

		String[] phoneArray = phones.split("/");
		if(phones.contains("/")){
			phoneArray = phones.split("/");
		} else if(phones.contains(" ")){
			phoneArray = phones.split(" ");
		} else if(phones.contains(",")){
			phoneArray = phones.split(",");
		}

		for (String phone : phoneArray) {
			phone = phone.trim();
			//判断是手机号再添加
			if(StrUtil.isNotEmpty(phone) && isPhoneNumber(phone)){
				list.add(phone);
			}
		}
		return list;
	}


	/**
     * 隐藏多个逗号分隔的手机号中间4位
     * @param phones 逗号分隔的手机号字符串（例如："13812345678,13987654321"）
     * @return 隐藏中间4位后的字符串（例如："138****5678,139****4321"）
     */
    public static String hideMiddleFourDigits(String phones) {
        if (phones == null || phones.isEmpty()) {
            return phones;
        }

        String[] phoneArray = phones.split("/");
        if(phones.contains("/")){
            phoneArray = phones.split("/");
        } else if(phones.contains(" ")){
            phoneArray = phones.split(" ");
        } else if(phones.contains(",")){
            phoneArray = phones.split(",");
        }
        StringBuilder result = new StringBuilder();

        for (String phone : phoneArray) {
            phone = phone.trim();
            if(StrUtil.isNotEmpty(phone)){
                if (phone.length() == 11) { // 标准11位手机号
                    String hiddenPhone = phone.substring(0, 3) + "****" + phone.substring(7);
                    result.append(hiddenPhone).append(",");
                } else {
                    result.append(phone).append(","); // 非标准手机号不做处理
                }
            }
        }

        // 移除最后一个多余的逗号
        if (result.length() > 0) {
            result.deleteCharAt(result.length() - 1);
        }

        return result.toString();
    }

    // 测试方法
    public static void main(String[] args) {
        String phones = "13812345678,13987654321,12345";
        System.out.println(hideMiddleFourDigits(phones)); // 输出：138****5678,139****4321,12345



		boolean bl = isPhoneNumber("18963389633");
		System.out.println(""+bl);
    }
}
